// Type: NHibernate.Collection.Generic.PersistentGenericSet`1
// Assembly: NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
// Assembly location: E:\ASP.NET\Sourse\Work.External\NHibernate\NHibernate.dll

using Iesi.Collections.Generic;
using NHibernate.Collection;
using NHibernate.DebugHelpers;
using NHibernate.Engine;
using NHibernate.Loader;
using NHibernate.Persister.Collection;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;

namespace NHibernate.Collection.Generic
{
    [DebuggerTypeProxy(typeof (CollectionProxy<T>))]
    [Serializable]
    public class PersistentGenericSet<T> : PersistentSet, Iesi.Collections.Generic.ISet<T>, ICollection<T>,
                                           IEnumerable<T>, IEnumerable, ICloneable
    {
        protected Iesi.Collections.Generic.ISet<T> gset;
        public PersistentGenericSet();
        public PersistentGenericSet(ISessionImplementor session);
        public PersistentGenericSet(ISessionImplementor session, Iesi.Collections.Generic.ISet<T> original);

        #region ISet<T> Members

        Iesi.Collections.Generic.ISet<T> Iesi.Collections.Generic.ISet<T>.Union(Iesi.Collections.Generic.ISet<T> a);
        Iesi.Collections.Generic.ISet<T> Iesi.Collections.Generic.ISet<T>.Intersect(Iesi.Collections.Generic.ISet<T> a);
        Iesi.Collections.Generic.ISet<T> Iesi.Collections.Generic.ISet<T>.Minus(Iesi.Collections.Generic.ISet<T> a);
        Iesi.Collections.Generic.ISet<T> Iesi.Collections.Generic.ISet<T>.ExclusiveOr(Iesi.Collections.Generic.ISet<T> a);
        bool Iesi.Collections.Generic.ISet<T>.ContainsAll(ICollection<T> c);
        bool Iesi.Collections.Generic.ISet<T>.Add(T o);
        bool Iesi.Collections.Generic.ISet<T>.AddAll(ICollection<T> c);
        bool Iesi.Collections.Generic.ISet<T>.RemoveAll(ICollection<T> c);
        bool Iesi.Collections.Generic.ISet<T>.RetainAll(ICollection<T> c);
        void ICollection<T>.Add(T item);
        bool ICollection<T>.Contains(T item);
        void ICollection<T>.CopyTo(T[] array, int arrayIndex);
        bool ICollection<T>.Remove(T item);
        IEnumerator<T> IEnumerable<T>.GetEnumerator();
        bool ICollection<T>.IsReadOnly { get; }

        #endregion

        public override void BeforeInitialize(ICollectionPersister persister, int anticipatedSize);

        public override object ReadFrom(IDataReader rs, ICollectionPersister role, ICollectionAliases descriptor,
                                        object owner);

        public override void BeginRead();
        public override bool EndRead(ICollectionPersister persister);
    }
}
